// axios基础的封装
import axios from "axios";
import { ElMessage } from "element-plus";
import { useUserStore } from "../stores/user.ts";
import router from "../router/router";

const instance = axios.create({
  baseURL: "http://pcapi-xiaotuxian-front-devtest.itheima.net",
  timeout: 5000,
});

// 拦截器
// axios请求拦截器
instance.interceptors.request.use((config) => {
    // 1. 从pinia获取token数据
    const userStore = useUserStore();
    const token = userStore.userInfo.token;
    if (token) {
      // 2. 按照后端的要求拼接token数据
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (e) => Promise.reject(e)
);

// axios响应式拦截器
instance.interceptors.response.use(
  (res) => {
    return res;
  },
  (e) => {
    const userStore = useUserStore();
    // 统一错误提示
    ElMessage({
      type: "warning",
      message: e.response.data.msg,
    });
    // 401 token失效处理
    if (e.response.status === 401) {
      // 清除本地用户数据
      userStore.clearUserInfo();
      // 跳转到登录页
      router.push({ path: "/login" });
    }
    return Promise.reject(e);
  }
);

export default instance;
